User-targeted advertising

ABSTRACT

Structured data sets including one or more attributes are identified, each structured data set associated with, for example, a particular user. Values corresponding the at least one of the one or more attributes in each structured data set are identified. A condition established by a content provider, for instance, an advertiser, is compared to the identified values to determine if the condition is satisfied. When the condition is satisfied, one or more content items are identified to the users associated with the structured data sets containing identified values satisfying the condition.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation application of, and claims priorityto, U.S. patent application Ser. No. 17/107,680, titled “USER-TARGETEDADVERTISING,” filed on Nov. 30, 2020, which is a continuationapplication of, and claims priority to, U.S. patent application Ser. No.16/265,691, titled “USER-TARGETED ADVERTISING,” filed on Feb. 1, 2019,which is a continuation application of, and claims priority to, U.S.patent application Ser. No. 13/617,912, now U.S. Pat. No. 10,198,744,titled “USER-TARGETED ADVERTISING,” filed on Sep. 14, 2012, which is acontinuation application of, and claims priority to, U.S. patentapplication Ser. No. 12/025,239, now abandoned, titled “USER-TARGETEDADVERTISING,” filed on Feb. 4, 2008. The disclosure of each of theforegoing applications is incorporated herein by reference.

BACKGROUND

The subject matter of this application is generally related toinformation presentation.

Advertising using traditional media, such as television, radio,newspapers and magazines, is well known. Unfortunately, even when armedwith demographic studies and entirely reasonable assumptions about thetypical audience of various media outlets, advertisers recognize that anon-trivial portion of their ad budget is simply wasted. Moreover, it isvery difficult to identify and eliminate such waste. Recently,advertising over more interactive media has become popular. For example,as the number of people using the Internet has exploded, advertisershave come to appreciate media and services offered over the Internet asa potentially powerful way to advertise.

Web site-based advertisements (“ads” also referred to as “Web ads”) aresome times presented to their advertising audience in the form of“banner ads”—i.e., a rectangular box that includes graphic components.When a member of the advertising audience (hereinafter referred to as a“viewer” or “user” without loss of generality) selects one of thesebanner ads by clicking on it, embedded hypertext links typically directthe viewer to the advertiser's Web site. This process, wherein theviewer selects an ad, is commonly referred to as a “click-through”(“click-through” is intended to cover any user selection.). The ratio ofthe number of click-throughs to the number of impressions of the ad(i.e., the number of times an ad is displayed) is commonly referred toas the “click-through rate” of the ad.

Online social networks have become popular for professional and/orsocial networking, and are thus popular locations for placingadvertisements. Some online social networks provide content items thatmay be of interest to users, including identification of other usersand/or groups that may of interest to a user. Advertisement placement onsocial networking sites is challenging because such sites have userswith many different interests. Accordingly, many advertisements, e.g.,advertisements directed to particular products, may not be of interestto many users of an online social network.

SUMMARY

Systems, methods, and computer program products described in thisspecification establish a structured data set for each of a number ofusers. Content providers establish conditions that are compared tovalues within the structured data sets to identify users that satisfythe conditions. Content providers can display content only to thoseusers whose structured data sets satisfy the conditions. This may beparticularly advantageous where a large number of characteristics areknown about users, such as users that maintain profiles that are storedand accessible by the system and processes described herein. This caninclude, for instance, users that are members of online social networks.Additionally, content providers can identify the number of users thatsatisfy conditions and use that knowledge to further modify theconditions in real-time (i.e., immediately after creating the initialcondition) to broaden or restrict the number of users that may receivecontent. Using an iterative process allows content providers to target aspecific audience. This iterative and real-time process may beadvantageous, for instance, during the creation of an advertisingcampaign where content providers can refine their conditions repeatedlyin minutes to identify an appropriate subset of users to receivecontent.

In general, one aspect of the subject matter described in thisspecification can be embodied in methods that include the actions ofidentifying a plurality of structured data sets, each structured dataset associated with a user and including one or more attributes,identifying values corresponding to at least one of the one or moreattributes in each structured data set, comparing a conditionestablished by a content provider to one or more of the identifiedvalues, and determining a number of structured data sets having the oneor more of the identified values that satisfy the condition establishedby the content provider.

According to a feature, the method includes receiving a revisedcondition from the content provider. According to another feature, themethod can include comparing the revised condition to one or more of theidentified values. The method can also include determining a number ofstructured data sets having the one or more of the identified valuesthat satisfy the revised condition established by the content provider.One or more content items may also be displayed to users associated withthe structured data sets having the one or more of the identified valuesthat satisfy the condition established by the content provider.

According to yet another feature, the method can include identifying aclick through rate associated with displayed one or more content items.

According to another features, the one or more attributes representcharacteristics of the user associated with each structured data set.The one or more attributes can include age, gender, number of friends,interests, zip code, or length of time since previous login.

According to still additional features, the method can include receivingthe condition from the content provider, where the condition identifiesone or more required values associated with at least one of the one ormore attributes. The one or more required values can be compared withthe identified values. In another feature, the method can determine whenthe identified values satisfy the condition. According to yet anotherfeature, the one or more attributes include one or more publicattributes and/or one or more private attributes. The one or more publicattributes can be displayed to the content provider.

Other embodiments of this aspect include corresponding systems,apparatus, and computer program products.

One or more of the following advantages may be achieved. Contentproviders such as advertisers can target a certain market segment formarketing. Rather than displaying content to an entire user populationcontent providers can restrict content to a certain subset of users thatthe content providers can identify based on their attributes, i.e.,characteristics. As an alternate to restricting ads to a subset ofusers, content providers may pay more for ads shown to a subset ofusers.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example system for identifying contentitems based on structured data sets.

FIG. 2 is a more detailed block diagram of the example system foridentifying content items based on structured data sets.

FIG. 3 is a flow diagram of an example process for identifying contentitems based on structured data sets.

FIG. 4 is a flow diagram of an example process for identifying a numberof users whose structured data sets satisfy conditions established by acontent provider.

FIG. 5 is a flow diagram of an example process for iterativelypermitting a content provider to modify the conditions that determinethe users to which content items will be displayed.

FIG. 6 is a block diagram of an example computer system that can beutilized to implement the systems and methods described herein.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an example system 100 for identifyingcontent items, such as advertisements, based on structured data sets. Insome implementations, each structured data set corresponds to aparticular user. Alternatively, a structured data set can correspond toall members of a class of users. Structured data sets include structureddata that, in some implementations, includes a number of attribute-valuepairs. Attributes may be common to many users and identifycharacteristics of users (e.g., age, gender, weight, etc.), whereas thevalue corresponding to each attribute in each structured data setdefines a characteristic of that user. For instance, a structured dataset for an individual may include the following attribute-values pairs:

-   -   Age: 35 yrs    -   Gender: Male    -   Number of Friends: 72    -   Interests: Cars, Reading    -   Zip code: 30067    -   Days Since Last Login: 10        where ‘Age’, ‘Gender’, ‘Number of Friends’, ‘Interests’, ‘Zip        code’, and ‘Days Since Last Login’ are attributes, and ‘35 yrs’,        ‘Male’, ‘72’, ‘Cars’, ‘Reading’, ‘30067’, and ‘10’ are values.        The attributes and values associated with each are used to        determine whether each user satisfies conditions established by        a content provider, as explained in greater detail below.

In some implementations, structured data may be identified from datacollected and/or stored by a social network system 110 that can, forexample, host numerous user accounts 112. An example social networksystem can include Orkut, hosted by Google, Inc., of Mountain View,Calif. Other social networks can, for example, include school alumniwebsites, an internal company web site, dating networks, or the like.Each user account 112 can, for example, include user profile data 114,user acquaintances data 116, user groups data 118, user media data 120,and user options data 122. Other user data can also be included in theuser accounts 112. The data in each user account can be used to populatethe structured data 160 for each user, and more particularly, theattribute-value pairs. Structure data 160 may be stored internal orexternal (as shown in FIG. 1) to the social network system 110 or may bestored at a location accessible anywhere on a network 102, such as theInternet. In some cases, where the social network is different from thecontent server, a copy of the structured data may be provided by thesocial network to the content server and maintained separately andupdated regularly.

The user profile data 114 can, for example, include general demographicdata about a user, such as age, sex, home location, interests, etc. Insome implementations, the user profile data 114 can also includeprofessional information, e.g., occupation, educational background,etc., and other data, such as contact information. In someimplementations, the user profile data 114 can include open profiledata, e.g., free-form text that may be typed by the user into fields forvarious subjects, e.g., “Job Description,” “Favorite Foods,” “Hobbies,”etc., and constrained profile data, e.g., binary profile data selectedby check boxes, radio buttons, etc., or predefined selectable profiledata, e.g., income ranges, zip codes, etc. In some implementations, someor all or the user profile data 114 can be classified as public orprivate profile data, e.g., data that can be shared publicly or datathat can be selectively or otherwise not shared. According to someimplementations, profile data 114 not classified as private data can,for example, be classified as public data, e.g., data that can be viewedby any user accessing the social network system 110.

The user acquaintances data 116 can, for example, define useracquaintances 117 associated with a user account 112. In someimplementations, user acquaintances 117 can include, for example, usersassociated with other user accounts 112 that are classified as“friends,” e.g., user accounts 112 referenced in a “friends” or“buddies” list. Other acquaintances 117 can also be defined, e.g.,professional acquaintances, client acquaintances, family acquaintances,etc. In some implementations, the user acquaintance data 116 for eachuser account 112 can, for example, be specified by users associated witheach user account 112, and thus can be unique for each user account 112.

The user groups data 118 can, for example, define user groups 119 towhich a user account 112 is associated. In an implementation, usergroups 119 can, for example, define an interest or topic, e.g., “Wine,”“Open Source Chess Programming,” “Travel Hints and Tips,” etc. In someimplementations, the user groups 119 can, for example, be categorized,e.g., a first set of user groups 119 can belong to an “Activities”category, a second set of user groups 119 can belong to an “Alumni &Schools” category, etc.

The user media data 120 can, for example, include one or more contentitems, such as user documents, e.g., web pages. A document can, forexample, include a file, a combination of files, one or more files withembedded links to other files, etc. The files can be of any type, suchas text, audio, image, video, hyper-text mark-up language documents,etc. In the context of the Internet, a common content item is a Webpage. Other content items can also be defined by the user media data120.

The user options data 122 can, for example, include data specifying useroptions, such as e-mail settings, acquaintance notification settings,chat settings, password and security settings, etc. Other option datacan also be included in the user options data 122.

In some implementations, the content serving system 130 can directly, orindirectly, enter, maintain, identify, and track content items 132. Thecontent items 132 can, for example, include a web page or other contentdocument, or text, graphics, video, audio, mixed media, etc. In someimplementations, the content items 132 are advertisements. Theadvertisements can, for example, be in the form of graphical ads, suchas banner ads, text only ads, image ads, audio ads, video ads, adscombining one of more of any of such components, etc. The advertisementscan also include embedded information, such as links, meta-information,and/or machine executable instructions.

In some implementations, user devices 140 a, 140 b and 140 c cancommunicate with the social network system 110 over the network 102,such as the Internet. The user devices 140 can be any device capable ofreceiving the user media data 120, such as personal computers, mobiledevices, cell phones, personal digital assistants (PDAs), televisionsystems, etc. The user devices 140 can be associated with user accounts112, e.g., the users of user devices 140 a and 140 b can be logged-inmembers of the social network system 110, having corresponding useraccounts 112 a and 112 b. Additionally, the user devices 140 may not beassociated with a user account 112, e.g., the user of the user device142 c may not be a member of the social network system 110 or may be amember of the social network system 110 that has not logged in.

In some implementations, upon a user device 140 communicating a requestfor media data 120 of a user account 112, or a request for some othersocial network media data to the social network system 110, the socialnetwork system 110 can, for example, provide the user media data 120 orthe other requested media data to user device 140. In someimplementations, the user media data 120 or other requested media datacan include an embedded request code, such as one or more Javascriptcode snippets. In other implementations, the social network system 110can insert the embedded request code into the user media data 120 or theother requested media data when served to a user device 140.

The user device 140 can render the requested data, e.g., a user webpage, or some other social network 110 page, in a presentationenvironment 142, e.g., in a web browser application. Upon rendering therequested data, the user device 140 executes the request code, whichcauses the user device 140 to issue a content request, e.g., anadvertisement request, to the content serving system 130. In response,the content serving system 130 can provide one or more content items 132to the user device 140. For example, the content items 132 a, 132 b and132 c can be provided to the user devices 140 a, 140 b and 140 c,respectively. In some implementations, the content items 132 a, 132 band 132 c are presented in the presentation environments 142 a, 142 band 142 c, respectively.

Rather than displaying content to an entire user population contentproviders 150 can restrict content to a certain subset of users that thecontent providers 150 can identify based on their attributes, i.e., usercharacteristics. According to some implementations, the content servingsystem 130 includes a content targeting module 133 that can identifyusers that should receive content items 132 based on structured datasets 160 for those users, such as users associated with the useraccounts 112.

The content targeting module 133 receives conditions from contentproviders 150 and compares those conditions to values within each user'sstructured data set to identify those users whose attributes and valuessatisfy the content provider conditions. As an example, a contentprovider 150 may establish the condition that users receive content, ora particular type of content, only when those users' structured datasets meet the following attribute-value conditions: “Age: between 25 and35”, “Zip code: 95051”, and “Number of Friends>10.” This permits thecontent provider 150 to target certain subsets of users.

Although displayed as part of the content serving system 130 in theimplementation shown in FIG. 1, the content targeting module 133 can beintegrated into the social network system 110. In other implementations,the content targeting module 133 can be a separate system in datacommunication with the social network system 110 and/or the contentserver system 130. The content targeting module 133 can be implementedin software and executed on a processing device, such as the computersystem 600 of FIG. 6. Example software implementations include C, C++,Java, or any other high-level programming language that may be utilizedto produce source code that can be compiled into executableinstructions. Other software implementations can also be used, such asapplets, or interpreted implementations, such as scripts, etc.Alternatively, the content targeting module 133 can be implemented inhardware or a combination of hardware and software.

Content providers 150 can use the identified number of users to furthermodify the conditions to broaden or restrict the number of users thatsatisfy the conditions. Using an iterative process allows contentproviders 150 to target a specific audience. This may be particularlyadvantageous where a large number of characteristics are known aboutusers, such as users that maintain profiles and data stored within asocial networking system 110.

The iterative process of modifying conditions to identify a desiredsubset of users can occur in real-time based on current structured dataand performance information. For instance, a content provider such as anadvertiser may adjust the conditions using a graphical user interface(GUI) at the content targeting module 133. An advertiser can repeatedlyrefine conditions in minutes to identify an appropriate subset of usersto receive content. Each time a condition is established it is comparedby the content targeting module 133 against currently stored structureddata and performance data to provide the content provider with real-timeresults. Content providers can view in real time what how many userswill receive impressions, the anticipated click through rate of thoseimpressions, and the like, for each content-provider entered condition.

According to some implementations, content providers may be charged orbe willing to pay a higher content placement fee (e.g., advertising fee)for placement of content directed to a specific set of users thatsatisfy the content provider's conditions. Thus, once a content providerhas established conditions that the content provider feels captures thecorrect target audience, the content provider may be charged a premiumfor content placement for those target users. Although the advertisermay pay more for content placement in front of the target group, theadvertiser may be willing to pay a greater amount for placement ofcontent, e.g., advertisements, that are provided to a group of usersthat are likely to provide the advertiser with a high return on theadvertiser's investment.

According to an implementation, conditions may be compared by thecontent targeting module 133 to structured data sets during periods oflow traffic or at other times regardless of whether a content providerhas requested identification of the users that may satisfy theconditions. When this occurs, each user's structured data set may betagged by the content targeting module 133 as satisfying (or failing tosatisfy) one or more conditions and/or combination of conditions. Thisoptimization reduces the need for the content targeting module 133 toconstantly compare all values within structured data sets to conditionsin real-time or in near-real time.

According to some implementations, the content providers 150 can, forexample, include web sites having “landing pages” 152 that a user isdirected to when the user clicks (e.g., interacts with) an advertisement132 presented on page provided from the social networking system 110.For example, the content providers 150 can provide content items 132 inthe form of “creatives,” which are advertisements that may include text,graphics and/or audio associated with the advertised service or product,and a link to a web site.

In some implementations, the content serving system 130 can monitorand/or evaluate performance data 134 related to the content items 132.For example, the performance of each advertisement 132 can be evaluatedbased on a performance metric, such as a click-through rate, aconversion rate, or some other performance metric. A click-through canoccur, for example, when a user of a user device, e.g., user device 140a, selects or “clicks” on an advertisement, e.g. the advertisement 132a. The click-through rate can be a performance metric that is obtainedby dividing the number of users that clicked on the advertisement or alink associated with the advertisement by the number of times theadvertisement was delivered. For example, if advertisement is delivered100 times, and three persons clicked on the advertisement, then theclick-through rate for that advertisement is 3%.

A “conversion” occurs when a user, for example, consummates atransaction related to a previously served advertisement. Whatconstitutes a conversion may vary from case to case and can bedetermined in a variety of ways. For example, a conversion may occurwhen a user of the user device 140 a clicks on an advertisement 132 a,is referred to the advertiser's Web page, such as one of the landingpages 152, and consummates a purchase before leaving that Web page.Other conversion types can also be used. A conversion rate can, forexample, be defined as the ratio of the number of conversions to thenumber of impressions of the advertisement (i.e., the number of times anadvertisement is rendered) or the ratio of the number of conversions tothe number of selections. Other types of conversion rates can also beused.

Other performance metrics can also be used. The performance metrics can,for example, be revenue related or non-revenue related. In someimplementations, the performance metrics can be parsed according totime, e.g., the performance of a particular content item 132 may bedetermined to be very high on weekends, moderate on weekday evenings,but very low on weekday mornings and afternoons, for example.Performance data can be provided to the content providers 150 to assistthe content provider in delivering, modifying, and determining content,such as advertisements, that is delivered to users. Performance data canalso assist the content providers 150 in modifying the conditions thatidentify users that receive content.

FIG. 2 is a more detailed block diagram of the example system 100 foridentifying content items based on structure data sets. In the examplesystem 100 of FIG. 2, the content targeting module 133 can utilizeattribute-value pairs from structured data sets to determine those usersthat satisfy conditions established by one or more content providers150.

In some implementations, attributes and their corresponding values areextracted from user profile data 114 a-114 n, user media data 120 a-120n, user acquaintances data 116 a-116 n, user groups data 118 a-118 n,and user options data 122 a-122 n of user accounts 112 a-112 n.Attributes can include characteristics such as age, gender, zip code,and the like. Attributes can also include traits such as personality,values, attitudes, interests, lifestyles, etc. of users associated withthe user accounts 112 a-112 n. Other types of attributes are possible.

According to some implementations, information provided by users infree-form text fields may be extracted by other system components, suchas a natural language processor (not illustrated), to identifyattributes and/or values. For instance, a user may identify theirfavorite hobbies by filling out a text field under the caption “Hobbies”by typing the sentence “I really enjoy hiking, especially long hikeswhen you can camp out for a few days. Indoor activities don't interestme at all, and I really don't like boring outdoor activities likegardening.” A natural language processor can identify the attribute as“Hobbies” and values as “Hiking”. As can be seen from the previousexample, data associated with a user may identify things a user isdisinterested in. Attribute value pairs can therefore include thisinformation as well. Thus, in the above example, the attribute “Hobbies”may include a value “Gardening” that is modified or also paired with anegative indicator to indicate that the user is disinterested in aparticular subject. A content provider 150 can establish a condition,e.g., that identifies users that fall within certain specifications,including disinterest in a particular subject.

In some implementations, an example process flow for identifyingstructured data sets begins when the content targeting module 133receives the user profile data 114 a-114 n, user media data 120 a-120 n,user acquaintances data 116 a-116 n, user groups data 118 a-118 n, anduser options data 122 a-122 n of user accounts 112 a-112. The contentserving system 130 and/or content targeting module 133 can, for example,be configured to extract attribute-value pairs from the received data.According to some implementations, the content targeting module 133 canutilize another component, such as a natural language processor or thelike, to extract attribute-value pairs.

In some implementations, data 114, 116, 118, 120, 122 associated with aparticular user account, e.g. user account 112 a can, for example, beprovided to the content serving system 130 by a user device 140associated with the particular user account 112, e.g., the user device140 a upon which a logged in session for the particular user account 112a has been established. For example, if the user device 140 a renders aweb page from the social network system 110 that includes a content itemrequest instruction, a corresponding content item request 126 a thatincludes the user profile data 114 a-114 n, user media data 120 a-120 n,user acquaintances data 116 a-116 n, user groups data 118 a-118 n,and/or user options data 122 a-122 n can be provided to the contentserving system 130.

Other schemes can also be used to provide the structured data 160 to thecontent server system 130. For example, the content serving system 130may partner with the social network system 110 to receive user account112 identifiers in corresponding content requests 126 a-126 n. Inresponse to receiving the user account 112 identifiers, the contentserving system 130 can transmit the user account 112 identifiers to thesocial network system 110 in a request for corresponding structured data160. The social network system 110 can, in response, provide thecorresponding structured data 160 to the content serving system 130. Asmentioned earlier, in some implementations the social network system 110periodically provides an updated copy of the structured data sets to thecontent serving system 130.

According to some implementations, the content serving system 130 and/orcontent targeting module 133 receives one or more conditions from thecontent providers 150 and compares the conditions to structured datacorresponding to each user (also referred to as a ‘structured dataset’). The content targeting module 133 identifies the structured datasets, and thus users, that satisfy the content provider conditions. Thecontent targeting module 133 can identify the users and/or number ofusers to the content provider 150, which can then optionally revise theconditions to target a broader or narrower group of users. The subset ofusers that satisfy the conditions may be provided to content providersin real time. When conditions are revised the content targeting module133 re-compares the structured data sets with the revised conditions toidentify users that satisfy the revised conditions. The content servingsystem 130 can then serve content provided from the content providers150 to users that satisfy the conditions.

According to some implementations, structured data 160 can be providedto advertisers, e.g., the content providers 150. According to someimplementations, only a portion of the structure data may be provided tothe content providers 150. Therefore, each attribute-value pair may beidentified as a public or private, and the content providers 150 mayonly receive public attribute-value pairs. According to otherimplementations, the content providers may be provided only with some orall attributes, and no values. Alternatively, the content providers maybe provided only with some or all values, and no attributes.

Providing this information to the content providers 150 can, forexample, facilitate the targeting of content items 132, e.g.,advertisements, to social networking sites that have users having manydifferent interests. For example, the structured data 160 for the socialnetwork system 110 may identify a set of highly relevant marketingverticals for which many of the users of the social network system 110may have a strong interest. Accordingly, one or more content providers150 can target advertisements related to the verticals to users of thesocial network system 110.

In some implementations, the content targeting module 133 can processthe user accounts 112 a-112 n periodically, e.g., monthly, to revise thestructured data 160. Other processing triggers, e.g., changes in theuser account 112 corpus, can also be used. In some implementations, thecontent targeting module 133 can process the user accounts 112 a-112 nin an offline batch process. The processing results can, for example, bestored and accessed during the serving of content. In otherimplementations, the content targeting module 133 can process the useraccounts 112 a-112 n in an online process, e.g., in response to a userdevice 140 submitting a content request to the social network system110.

FIG. 3 is a flow diagram of an example process 300 for identifyingcontent items based on structured data sets. The process 300 can, forexample, be implemented in the content targeting module 133. In someimplementations, the content targeting module 133 may be within thecontent serving system 130. Other implementations, however, can also beused. For instance, the content targeting module 133 can be integratedinto the social network system 110 or in a separate system in datacommunication with the social network system 110 and/or the contentserver system 130.

Stage 301 builds structured data sets using data associated with eachuser profile, including, for instance, user profile data 114 a-114 n,user media data 120 a-120 n, user acquaintances data 116 a-116 n, usergroups data 118 a-118 n, and/or user options data 122 a-122 n. Forexample, the content targeting module 133 can identify and extractattribute and values from each of set of data.

Stage 302 identifies values in the structured data sets that correspondto attributes. For example, the content targeting module 133 canidentify and extract attribute and values from each of set of data. Theidentified values are compared to content provider conditions in stage304. For example, the content targeting module 133 can execute thecomparison of values in structured data sets to the required valueswithin conditions established by one or more content providers.

For instance, if a content provider conditions require: “Age: between 25and 35”, and “Zip code: 95051”, then the content targeting module 133can compare the values from the structured data sets that include theattributes “Age” and ‘Zip code” and determine whether the values satisfythe required values. The content targeting module 133 can store theresults of the comparison such that users whose structured data setssatisfy the conditions may be targeted by content providers to receivecontent, e.g., an advertisement.

Stage 306 identifies one or more content items for display to userswhose structured data sets include values satisfying the conditions. Forexample, the content serving system 130 can identify content items 132that the content provider wishes to present to users.

Other processes for identifying content items based on structured datasets can also be used.

FIG. 4 is a flow diagram of an example process 400 for identifying anumber of users whose structured data sets satisfy conditionsestablished by a content provider.

The process 400 can, for example, be implemented in the contenttargeting module 133. In some implementations, the content targetingmodule 133 may be within the content serving system 130. Otherimplementations, however, can also be used. For instance, the contenttargeting module 133 can be integrated into the social network system110 or in a separate system in data communication with the socialnetwork system 110 and/or the content server system 130.

Stage 401 builds structured data sets using data associated with eachuser profile, including, for instance, user profile data 114 a-114 n,user media data 120 a-120 n, user acquaintances data 116 a-116 n, usergroups data 118 a-118 n, and/or user options data 122 a-122 n. Forexample, the content targeting module 133 can identify and extractattribute and values from each of set of data.

Stage 402 identifies values in the structured data sets that correspondto attributes. For example, the content targeting module 133 canidentify and extract attribute and values from each of set of data. Theidentified values are compared to content provider conditions in stage404. For example, the content targeting module 133 can execute thecomparison of values in structured data sets to the required valueswithin conditions established by one or more content providers. Thecontent targeting module 133 can store the results of the comparisonsuch that users whose structured data sets satisfy the conditions may betargeted by content providers to receive content, e.g., anadvertisement.

Stage 406 identifies the number of users whose structured data setsinclude values satisfying the conditions. For example, the contentserving system 130 can identify the number of users that may be servedcontent items 132 under the content provider's current conditions.According to some implementations, this information may be provided tothe content provider, which may use the information to determine whetherthe conditions should be revised to target a greater or lesser number ofusers.

Other processes for identifying a number of users satisfying contentprovider conditions can also be used.

FIG. 5 is a flow diagram of an example process 500 for iterativelypermitting a content provider to modify the conditions that determinethe users to which content items will be displayed.

The process 500 can, for example, be implemented in the contenttargeting module 133. In some implementations, the content targetingmodule 133 may be within the content serving system 130. Otherimplementations, however, can also be used. For instance, the contenttargeting module 133 can be integrated into the social network system110 or in a separate system in data communication with the socialnetwork system 110 and/or the content server system 130.

Stage 501 receives content provider conditions. The conditions may betransmitted, for instance, from a content provider to the contentserving system 130 or may be entered by a content provider using thecontent serving system 130 and/or content targeting module 133. Forexample, an advertiser may utilize a GUI at the content targeting module133 to enter the conditions. This may be facilitated, for instance,using a series of pull down menus in which attributes may be selected,along with Boolean operators (e.g., ‘and’, ‘or’, etc.). Values may alsobe entered by content providers in a similar manner, such as manually orvia pull down menus that provide content providers with the ability toselect ranges, minimum values, maximum values, and the like.

Stage 502 compares the conditions received in Stage 501 with identifiedvalues in structured data sets corresponding to a group of users. Forexample, the content targeting module 133 can execute the comparison ofvalues in structured data sets to the required values within conditionsestablished by one or more content providers.

Stage 504 determines the number of users whose structured data setsinclude values satisfying the content provider conditions. This processmay be implemented, for example, the content targeting module 133. Thisinformation is provided to the content provider in Stage 506 so that thecontent provider can use the information to determine whether theconditions should be revised to target a greater or lesser number ofusers.

In stage 508, if the content provider determines that the number ofusers is appropriate, in stage 510 the content targeting module 133 canidentify one or more content items to be displayed to the users whosestructured data sets include values satisfying the condition. Otherwise,the content provider can revise the conditions to target a greater orlesser number of users, and the process repeats starting at stage 501.

Other processes for iteratively permitting a content provider withinformation to determine whether conditions should be adjusted may alsobe used. For instance, instead of providing content providers with thetotal number of users that satisfy conditions, the content providers maybe provided with metrics, such as the number of conversion orclick-throughs that are anticipated by presenting content to a subset ofusers identified by the conditions.

FIG. 6 is a block diagram of an example computer system 600 that can beutilized to implement the systems and methods described herein. Thesystem 600 includes a processor 610, a memory 620, a storage device 630,and an input/output device 640. Each of the components 610, 620, 630,and 640 can, for example, be interconnected using a system bus 650. Theprocessor 610 is capable of processing instructions for execution withinthe system 600. In one implementation, the processor 610 is asingle-threaded processor. In another implementation, the processor 610is a multi-threaded processor. The processor 610 is capable ofprocessing instructions stored in the memory 620 or on the storagedevice 630.

The memory 620 stores information within the system 600. In oneimplementation, the memory 620 is a computer-readable medium. In oneimplementation, the memory 620 is a volatile memory unit. In anotherimplementation, the memory 620 is a non-volatile memory unit.

The storage device 630 is capable of providing mass storage for thesystem 600. In one implementation, the storage device 630 is acomputer-readable medium. In various different implementations, thestorage device 630 can, for example, include a hard disk device, anoptical disk device, or some other large capacity storage device.

The input/output device 640 provides input/output operations for thesystem 600. In one implementation, the input/output device 640 caninclude one or more of a network interface devices, e.g., an Ethernetcard, a serial communication device, e.g., and RS-232 port, and/or awireless interface device, e.g., and 802.11 card. In anotherimplementation, the input/output device can include driver devicesconfigured to receive input data and send output data to otherinput/output devices, e.g., keyboard, printer and display devices 660.

The apparatus, methods, flow diagrams, and structure block diagramsdescribed in this patent document may be implemented in computerprocessing systems including program code comprising programinstructions that are executable by the computer processing system.Other implementations may also be used. Additionally, the flow diagramsand structure block diagrams described in this patent document, whichdescribe particular methods and/or corresponding acts in support ofsteps and corresponding functions in support of disclosed structuralmeans, may also be utilized to implement corresponding softwarestructures and algorithms, and equivalents thereof.

This written description sets forth the best mode of the invention andprovides examples to describe the invention and to enable a person ofordinary skill in the art to make and use the invention. This writtendescription does not limit the invention to the precise terms set forth.Thus, while the invention has been described in detail with reference tothe examples set forth above, those of ordinary skill in the art mayeffect alterations, modifications and variations to the examples withoutdeparting from the scope of the invention.

1. (canceled)
 2. A method performed by one or more processing devices,comprising: for a plurality of users, generating a structured data setthat includes attributes of the plurality of users; receiving, from acontent provider, data specifying a target audience; determining, by oneor more data processors and using the generated structured data sets,how many of the plurality of users have the attributes that overlap withthe target audience specified; providing, to the content provider, anindication of (i) how many of the plurality of users have, within thestructured data set, attributes that overlap with the audience specifiedand (ii) how many of the plurality of users will be presented contentsubsequently distributed by the content provider.
 3. The method of claim2, further comprising: collecting characteristics of a given user; andpopulating, as attribute pairs representing the given user, a portion ofthe structured data set corresponding to the given user based on thecollected characteristics of the given user.
 4. The method of claim 3,wherein the characteristics of the given user specifies an interest ofthe given user, and determining how many of the users have thestructured data set comprises determining how many of the users have theinterest.
 5. The method of claim 4, further comprising comparing a setof conditions to the attributes of the plurality of users.
 6. The methodof claim 5, further comprising: determining that a particular user'sstructured data set fails to match the set of conditions; and taggingthe particular user's structured data set as failing to satisfy the setof conditions.
 7. The method of claim 6, wherein determining how many ofthe plurality of users have the attributes that overlap with the targetaudience comprises determining how many of the plurality of users havethe attributes that overlap with the target audience without comparingall values within the structured data set based on the tagging of theparticular user's structured data set.
 8. The method of claim 7, whereindetermining how many of the plurality of users have the attributes thatoverlap with the target audience comprises determining that fewer usershave the how many of the plurality of users have the attributes thatoverlap with the target audience than have attributes of a previouslyspecified target audience.
 9. A non-transitory machine-readable storagedevice storing instructions that are executable by one or moreprocessing devices, and cause the one or more processing devices toperform operations comprising: for a plurality of users, generating astructured data set that includes attributes of the plurality of users;receiving, from a content provider, data specifying a target audience;determining, by one or more data processors and using the generatedstructured data sets, how many of the plurality of users have theattributes that overlap with the target audience specified; providing,to the content provider, an indication of (i) how many of the pluralityof users have, within the structured data set, attributes that overlapwith the audience specified and (ii) how many of the plurality of userswill be presented content subsequently distributed by the contentprovider.
 10. The non-transitory machine-readable storage device ofclaim 9, wherein the instructions cause the one or more processingdevices to perform operations further comprising: collectingcharacteristics of a given user; and populating, as attribute pairsrepresenting the given user, a portion of the structured data setcorresponding to the given user based on the collected characteristicsof the given user.
 11. The non-transitory machine-readable storagedevice of claim 10, wherein the characteristics of the given userspecifies an interest of the given user, and determining how many of theusers have the structured data set comprises determining how many of theusers have the interest.
 12. The non-transitory machine-readable storagedevice of claim 11, wherein the instructions cause the one or moreprocessing devices to perform operations further comprising comparing aset of conditions to the attributes of the plurality of users.
 13. Thenon-transitory machine-readable storage device of claim 12, wherein theinstructions cause the one or more processing devices to performoperations further comprising: determining that a particular user'sstructured data set fails to match the set of conditions; and taggingthe particular user's structured data set as failing to satisfy the setof conditions.
 14. The non-transitory machine-readable storage device ofclaim 13, wherein determining how many of the plurality of users havethe attributes that overlap with the target audience comprisesdetermining how many of the plurality of users have the attributes thatoverlap with the target audience without comparing all values within thestructured data set based on the tagging of the particular user'sstructured data set.
 15. The non-transitory machine-readable storagedevice of claim 14, wherein determining how many of the plurality ofusers have the attributes that overlap with the target audiencecomprises determining that fewer users have the how many of theplurality of users have the attributes that overlap with the targetaudience than have attributes of a previously specified target audience.16. A system comprising: one or more computer readable storage devices;and one or more processors configured to execute instructions stored onthe one or more computer readable storage devices, wherein execution ofthe instructions cause the one or more processors to perform operationscomprising: for a plurality of users, generating a structured data setthat includes attributes of the plurality of users; receiving, from acontent provider, data specifying a target audience; determining, by oneor more data processors and using the generated structured data sets,how many of the plurality of users have the attributes that overlap withthe target audience specified; providing, to the content provider, anindication of (i) how many of the plurality of users have, within thestructured data set, attributes that overlap with the audience specifiedand (ii) how many of the plurality of users will be presented contentsubsequently distributed by the content provider.
 17. The system ofclaim 9, wherein the instructions cause the one or more processors toperform operations further comprising: collecting characteristics of agiven user; and populating, as attribute pairs representing the givenuser, a portion of the structured data set corresponding to the givenuser based on the collected characteristics of the given user.
 18. Thesystem of claim 10, wherein the characteristics of the given userspecifies an interest of the given user, and determining how many of theusers have the structured data set comprises determining how many of theusers have the interest.
 19. The system of claim 11, wherein theinstructions cause the one or more processors to perform operationsfurther comprising comparing a set of conditions to the attributes ofthe plurality of users.
 20. The system of claim 12, wherein theinstructions cause the one or more processors to perform operationsfurther comprising: determining that a particular user's structured dataset fails to match the set of conditions; and tagging the particularuser's structured data set as failing to satisfy the set of conditions.21. The system of claim 13, wherein determining how many of theplurality of users have the attributes that overlap with the targetaudience comprises determining how many of the plurality of users havethe attributes that overlap with the target audience without comparingall values within the structured data set based on the tagging of theparticular user's structured data set.